{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Logistic Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A logistic regression class for binary classification tasks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.classifier import LogisticRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./LogisticRegression_files/logistic_regression_schematic.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Related to the [`Perceptron`](./Perceptron.md) and ['Adaline'](./Adaline.md), a Logistic Regression model is a linear model for binary classification. However, instead of minimizing a linear cost function such as the sum of squared errors (SSE) in Adaline, we minimize a sigmoid function, i.e., the logistic function:\n",
    "\n",
    "$$\\phi(z) = \\frac{1}{1 + e^{-z}},$$\n",
    "\n",
    "where $z$ is defined as the net input\n",
    "\n",
    "$$z = w_0x_0 + w_1x_1 + ... + w_mx_m = \\sum_{j=0}^{m} w_j x_j= \\mathbf{w}^T\\mathbf{x}.$$ \n",
    "\n",
    "The net input is in turn based on the logit function\n",
    "\n",
    "$$logit(p(y=1 \\mid \\mathbf{x})) = z.$$\n",
    "\n",
    "Here, $p(y=1 \\mid \\mathbf{x})$ is the conditional probability that a particular sample belongs to class 1 given its features $\\mathbf{x}$. The logit function takes inputs in the range [0, 1] and transform them to values over the entire real number range. In contrast, the logistic function takes input values over the entire real number range and transforms them to values in the range [0, 1]. In other words, the logistic function is the inverse of the logit function, and it lets us predict the conditional probability that a certain sample belongs to class 1 (or class 0)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./LogisticRegression_files/logistic_function.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "After model fitting, the conditional probability $p(y=1 \\mid \\mathbf{x})$ is converted to a binary class label via a threshold function $g(\\cdot)$:\n",
    "\n",
    "$$y = g({z}) = \n",
    " \\begin{cases}\n",
    "  1 & \\text{if $\\phi(z) \\ge 0.5$}\\\\\n",
    "  0 & \\text{otherwise.}\n",
    "   \\end{cases}\n",
    "$$\n",
    "\n",
    "or equivalently:\n",
    "\n",
    "\n",
    "$$y = g({z}) = \n",
    "\\begin{cases}\n",
    "1 & \\text{if z $\\ge$ 0}\\\\\n",
    "0 & \\text{otherwise}.\n",
    "\\end{cases}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Objective Function -- Log-Likelihood"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In order to parameterize a logistic regression model, we maximize the likelihood $L(\\cdot)$ (or minimize the logistic cost function).\n",
    "\n",
    "We write the likelihood as \n",
    "\n",
    "$$L(\\mathbf{w}) = P(\\mathbf{y} \\mid \\mathbf{x};\\mathbf{w}) = \\prod_{i=1}^{n} P\\big(y^{(i)} \\mid x^{(i)}; \\mathbf{w}\\big) = \\prod^{n}_{i=1}\\bigg(\\phi\\big(z^{(i)}\\big)\\bigg)^{y^{(i)}} \\bigg(1-\\phi\\big(z^{(i)}\\big)\\bigg)^{1-y^{(i)}},$$\n",
    "\n",
    "under the assumption that the training samples are independent of each other."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In practice, it is easier to maximize the (natural) log of this equation, which is called\n",
    "the log-likelihood function:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$l(\\mathbf{w}) = \\log L(\\mathbf{w}) = \\sum^{n}_{i=1} y^{(i)} \\log \\bigg(\\phi\\big(z^{(i)}\\big)\\bigg) + \\big( 1 - y^{(i)}\\big) \\log \\big(1-\\phi\\big(z^{(i)}\\big)\\big)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One advantage of taking the log is to avoid numeric underflow (and challenges with floating point math) for very small likelihoods. Another advantage is that we can obtain the derivative more easily, using the addition trick to rewrite the product of factors as a summation term, which we can then maximize using optimization algorithms such as gradient ascent."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Objective Function -- Logistic Cost Function"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "An alternative to maximizing the log-likelihood, we can define a cost function $J(\\cdot)$ to be minimized; we rewrite the log-likelihood as:\n",
    "\n",
    "$$J(\\mathbf{w}) = \\sum_{i=1}^{m} - y^{(i)} log \\bigg( \\phi\\big(z^{(i)}\\big) \\bigg) - \\big(1 - y^{(i)}\\big) log\\bigg(1-\\phi\\big(z^{(i)}\\big)\\bigg)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    " J\\big(\\phi(z), y; \\mathbf{w}\\big) =\\begin{cases}\n",
    "    -log\\big(\\phi(z) \\big) & \\text{if $y = 1$}\\\\\n",
    "    -log\\big(1- \\phi(z) \\big) & \\text{if $y = 0$}\n",
    "  \\end{cases}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./LogisticRegression_files/logistic_cost.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see in the figure above, we penalize wrong predictions with an increasingly larger cost."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gradient Descent (GD)  and Stochastic Gradient Descent (SGD) Optimization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Gradient Ascent and the log-likelihood"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To learn the weight coefficient of a logistic regression model via gradient-based optimization, we compute the partial derivative of the log-likelihood function -- w.r.t. the *j*th weight -- as follows:\n",
    "\n",
    "$$\\frac{\\partial}{\\partial w_j} l(\\mathbf{w}) = \\bigg(y \\frac{1}{\\phi(z)} - (1-y) \\frac{1}{1-\\phi{(z)}} \\bigg) \\frac{\\partial}{\\partial w_j}\\phi(z)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As an intermediate step, we compute the partial derivative of the sigmoid function, which will come in handy later:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\\begin{align}\n",
    "&\\frac{\\partial}{\\partial z} \\phi(z) = \\frac{\\partial}{{\\partial z}} \\frac{1}{1+e^{-z}} \\\\\\\\\n",
    "&= \\frac{1}{(1 + e^{-z})^{2}} e^{-z}\\\\\\\\\n",
    "&= \\frac{1}{1+e^{-z}} \\bigg(1 - \\frac{1}{1+e^{-z}} \\bigg)\\\\\\\\\n",
    "&= \\phi(z)\\big(1-\\phi(z)\\big)\n",
    "\\end{align}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we re-substitute $$\\frac{\\partial}{\\partial z} \\phi(z) = \\phi(z) \\big(1 - \\phi(z)\\big)$$ back into in the log-likelihood partial derivative equation and obtain the equation shown below:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\\begin{align}\n",
    "& \\bigg(y \\frac{1}{\\phi{(z)}} - (1 - y) \\frac{1}{1 - \\phi(z)} \\bigg) \\frac{\\partial}{\\partial w_j} \\phi(z) \\\\\\\\\n",
    "&= \\bigg(y \\frac{1}{\\phi{(z)}} - (1 - y) \\frac{1}{1 - \\phi(z)} \\bigg) \\phi(z) \\big(1 - \\phi(z)\\big) \\frac{\\partial}{\\partial w_j}z\\\\\\\\\n",
    "&= \\big(y(1-\\phi(z)\\big) - (1 - y) \\phi(z)\\big)x_j\\\\\\\\\n",
    "&=\\big(y - \\phi(z)\\big)x_j\n",
    "\\end{align}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, in order to find the weights of the model, we take a step proportional to the positive direction of the gradient to maximize the log-likelihood. Futhermore, we add a coefficient, the learning rate $\\eta$ to the weight update:\n",
    "\n",
    "\\begin{align}\n",
    "& w_j := w_j + \\eta \\frac{\\partial}{\\partial w_j} l(\\mathbf{w})\\\\\\\\\n",
    "& w_j := w_j + \\eta \\sum^{n}_{i=1} \\big( y^{(i)} - \\phi\\big(z^{(i)}\\big)\\big)x_j^{(i)}\n",
    "\\end{align}\n",
    "\n",
    "Note that the gradient (and weight update) is computed from all samples in the training set in gradient ascent/descent in contrast to stochastic gradient ascent/descent. For more information about the differences between gradient descent and stochastic gradient descent, please see the related article [Gradient Descent and Stochastic Gradient Descent](../general_concepts/gradient-optimization.md)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The previous equation shows the weight update for a single weight $j$. In gradient-based optimization, all weight coefficients are updated simultaneously; the weight update can be written more compactly as \n",
    "\n",
    "$$\\mathbf{w} := \\mathbf{w} + \\Delta\\mathbf{w},$$\n",
    "where\n",
    "\n",
    "$$\\Delta{\\mathbf{w}} = \\eta \\nabla l(\\mathbf{w})$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Gradient Descent and the logistic cost function"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the previous section, we derived the gradient of the log-likelihood function, which can be optimized via gradient ascent. Similarly, we can obtain the cost gradient of the logistic cost function $J(\\cdot)$ and minimize it via gradient descent in order to learn the logistic regression model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The update rule for a single weight:\n",
    "\n",
    "\\begin{align}\n",
    "& \\Delta{w_j} = -\\eta \\frac{\\partial J}{\\partial w_j} \\\\\n",
    "& = - \\eta \\sum_{i=1}^{n}\\big(y^{(i)} - \\phi\\big(z^{(i)}\\big) x^{(i)} \\big)\n",
    "\\end{align}\n",
    "\n",
    "The simultaneous weight update:\n",
    "\n",
    "$$\\mathbf{w} := \\mathbf{w} + \\Delta\\mathbf{w}$$\n",
    "\n",
    "where\n",
    "\n",
    "$$\\Delta{\\mathbf{w}} = - \\eta \\nabla J(\\mathbf{w}).$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Shuffling"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Random shuffling is implemented as:\n",
    "\n",
    "- for one or more epochs\n",
    "    - randomly shuffle samples in the training set\n",
    "        - for training sample *i*\n",
    "            - compute gradients and perform weight updates"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regularization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a way to tackle overfitting, we can add additional bias to the logistic regression model via a regularization terms. Via the L2 regularization term, we reduce the complexity of the model by penalizing large weight coefficients:\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$L2: \\frac{\\lambda}{2}\\lVert \\mathbf{w} \\lVert_2 = \\frac{\\lambda}{2} \\sum_{j=1}^{m} w_j^2$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In order to apply regularization, we just need to add the regularization term to the cost function that we defined for logistic regression to shrink the weights:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$J(\\mathbf{w}) =  \\sum_{i=1}^{m} \\Bigg[ - y^{(i)} log \\bigg( \\phi\\big(z^{(i)}\\big) \\bigg) - \\big(1 - y^{(i)}\\big) log\\bigg(1-\\phi\\big(z^{(i)}\\big)\\bigg) \\Bigg] + \\frac{\\lambda}{2} \\sum_{j=1}^{m} w_j^2$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The update rule for a single weight:\n",
    "\n",
    "\\begin{align}\n",
    "& \\Delta{w_j} = -\\eta \\bigg( \\frac{\\partial J}{\\partial w_j} + \\lambda w_j\\bigg)\\\\\n",
    "& = - \\eta \\sum_{i=1}^{n}\\big(y^{(i)} - \\phi\\big(z^{(i)}\\big) x^{(i)} \\big) - \\eta \\lambda w_j\n",
    "\\end{align}\n",
    "\n",
    "The simultaneous weight update:\n",
    "\n",
    "$$\\mathbf{w} := \\mathbf{w} + \\Delta\\mathbf{w}$$\n",
    "\n",
    "where\n",
    "\n",
    "$$\\Delta{\\mathbf{w}} = - \\eta \\big( \\nabla J(\\mathbf{w}) + \\lambda \\mathbf{w}\\big).$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For more information on regularization, please see [Regularization of Generalized Linear Models](../general_concepts/regularization-linear.md)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Bishop, Christopher M. [*Pattern recognition and machine learning*](http://www.springer.com/br/book/9780387310732). Springer, 2006. pp. 203-213"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - Gradient Descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 100/100 | Cost 0.32 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\no/8qVScsO3a1rtTkn1K6MqX0yZTSHGjt9gOpk1nFrDNsGPUfRMSu9Pc/RsRupHRQV43+q1SdsOzY\nVYwV/qQxZBWzzrBw4XyWLVsG3E5f3ys3emzZshUsXDifAw44oj3BjaEqVScsO3YVM25FfiKiH3hb\nSmnucO0s8qNOZhWzztDX18eCBT9g5cpnBj02deqzmDnzPUyY0PljoypVJyw7dmUqV+Gv1eR/6qmz\n0w03zB60fMaMWcycOaus8CRJ6nitJv/KHdrOnGmSl8qwaNHN7LPPwS23v/nmH3HwwW8vrX2VLFny\nIM9+9gvGvO14tC+izHWrs3jORKqBolXsvvKV4znrrPfyla8cX0r7KilSPc4qeeoWZd/nPy0iXhoR\nL8sX7Zb//vwytytpg6JV7NasWcO1114CvIBrr72ENWvWjGn7KilSPc4qeeomZY/8DwB+DtxBdp//\nOcDPgDNL3q6kXNEqdt/4xodZu3YacBJr107lm988aUzbV0mR6nFWyVM3Kfs+/wUppZ6UUm/TzwfK\n3K6kTNEqdmvWrOG66y4FDiPiw8Bhw47mi7avkiLV46ySp27jNX+pixWtYtc4is8MP5ov2r5KilSP\ns0qeuo3JX+pSRavYbRjFvwrYlZQeBXYDXjXkaL5o+yopUj3OKnnqRpW71U/S2Chaxe6aay5i7doE\n3EY2XWeDtWsT11xzEW9841+Nun2VFKkeZ5U8daNxK/LTKiv8SWOjaBW7NWvWcOmln2XFiqcHtZ82\nbWuOOeZ0Jk2aNOr2VVKkepxV8tRJKlfhr1Umf0mSRqfV5O8hn1QTS5Y8WJn1L1p0c4mRFFd230hV\nY/KXaqDs6m5F1l+02mDZrHynOjL5S12u7OpuRdZftNpg2ax8p7oy+UtdruzqbkXWX7TaYNmsfKe6\nMvlLXazs6m5F1l+02mDZrHynOjP5S12s7OpuRdZftNpg2ax8pzoz+UtdquzqbkXWX7TaYNmsfKe6\ns8Kf1KXKru5WZP1Fqw2Wzcp3qjuL/EhdquzqbkXWX7TaYNmsfKduZYU/SZJqxgp/Ugk6uRJc0dg7\n+bVKGp7JX2pRJ1eCKxp7J79WSSMz+Ust6ORKcEVj7+TXKqk1Jn+pBZ1cCa5o7J38WiW1xuQvjaCT\nK8EVjb2TX6uk1pn8pRF0ciW4orF38muV1DqTvzSMTq4EVzT2Tn6tkoqxwp80jE6uBFc09k5+rZKK\n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\nH3Iia2uEAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10e892cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhUAAAF5CAYAAAAoOtjCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XmcXFWd9/HPr8keSEcStpgAhjURBNKIiiwjIjio+Chu\njYwrKoqIGZXBGUcfdUaRx2FRcRkfHUfUFtzBZQCVRxREJM2iEBAUBEJYAqQTICQhfZ4/TpVdaTpJ\nL7fqVlV/3q/XfVXVvbeqfjmE9LfPufecSCkhSZI0Vh1lFyBJktqDoUKSJBXCUCFJkgphqJAkSYUw\nVEiSpEIYKiRJUiEMFZIkqRCGCkmSVAhDhSRJKoShQpIkFaIpQkVEzImI8yNiRUQ8HhE3RMSisuuS\nJEnDN6HsAiJiJnAl8AvgaGAFsAfwSJl1SZKkkYmyFxSLiDOA56WUDi+1EEmSNCbNMPzxMuDaiLgw\nIu6PiN6IOLHsoiRJ0sg0Q6iYD7wTuBU4CvgC8JmI+IdSq5IkSSPSDMMfa4FrUkqH1uw7FzgwpfT8\nIc6fRb724k7giUbVKUlSG5gC7ApcklJ6qOgPL/1CTWA5sHTQvqXAKzdx/tHAN+takSRJ7e31wLeK\n/tBmCBVXAnsN2rcX8NdNnH8nwDe+8Q0WLFhQx7JUa/HixZx99tlllzGu2OaNZ5s3nm3eWEuXLuWE\nE06Ays/SojVDqDgbuDIiPghcCDwHOBF42ybOfwJgwYIFLFrkVBaN0tnZaXs3mG3eeLZ549nmpanL\n5QOlX6iZUroWeAXQDfwB+Bfg1JTSt0stTJIkjUgz9FSQUvop8NOy65AkSaNXek+FJElqD4YKDUt3\nd3fZJYw7tnnj2eaNZ5u3l9LnqRipykJjS5YsWeLFPZIkjUBvby9dXV0AXSml3qI/354KSZJUCEOF\nJEkqhKFCkiQVwlAhSZIKYaiQJEmFMFRIkqRCGCokSVIhDBWSJKkQhgpJklQIQ4UkSSqEoUKSJBXC\nUCFJkgphqJAkSYUwVEiSpEIYKiRJUiEMFZIkqRCGCkmSVAhDhSRJKoShQpIkFcJQIUmSCmGokCRJ\nhTBUSJKkQhgqJElSIQwVkiSpEIYKSZJUCEOFJEkqRMuGijVryq5AkiTVatlQsXJl2RVIkqRahgpJ\nklSIlg0VfX1lVyBJkmq1bKiwp0KSpObSsqHCngpJkppLy4YKeyokSWouhgpJklSIlg0VDn9IktRc\nDBWSJKkQLRsqHP6QJKm5GCokSVIhSg8VEfGRiOgftN28pfcZKiRJai4Tyi6g4o/AC4GovH5yS294\n4glYuxYmT65rXZIkaZiaJVQ8mVJ6cKRveughmDOnHuVIkqSRKn34o2KPiFgWEX+OiG9ExLzhvGnF\ninqXJUmShqsZQsXVwJuAo4GTgGcAV0TE9C298aGH6luYJEkavtKHP1JKl9S8/GNEXAP8FXgN8F+b\nfudiPvCBzo2GP7q7u+nu7q5PoZIktZCenh56eno22tdX50meIqVU1y8YjUqwuCyl9C9DHFsELOno\nWMJ55y3ipJMaX58kSa2ot7eXrq4ugK6UUm/Rn98Mwx8biYitgd2B5Zs7b8YMhz8kSWompYeKiPg/\nEXFYROwSEQcDPwDWAz2be9/MmV6oKUlSMyn9mgpgLvAtYBbwIPAb4Lkppc32Q8ycaU+FJEnNpPRQ\nkVIa1ZWVnZ2GCkmSmknpwx+j5fCHJEnNpWVDhT0VkiQ1l5YNFfZUSJLUXFo6VPT1wZNbXHpMkiQ1\nQsuGis7O/Pjww+XWIUmSspYPFQ6BSJLUHFo2VMycmR+9WFOSpOZgqJAkSYVo2VCxzTYQ4fCHJEnN\nomVDxYQJTtUtSVIzadlQATBrlj0VkiQ1i5YOFbNn21MhSVKzaOlQMWuWoUKSpGbR0qFi9myHPyRJ\nahYtHSrsqZAkqXm0fKiwp0KSpObQ0qFi9mx45BHo7y+7EkmS1NKhYtasHChWriy7EkmS1PKhAhwC\nkSSpGbR0qJg9Oz96saYkSeVr6VBR7akwVEiSVL62CBUOf0iSVL6WDhWTJuXVSu2pkCSpfC0dKsC5\nKiRJahYtHypcVEySpObQ8qHCqbolSWoObREqHP6QJKl8LR8qHP6QJKk5tHyocPhDkqTm0PKhYvbs\nPPyRUtmVSJI0vrV8qJg1C558ElavLrsSSZLGt7YIFeDFmpIkla3lQ4WLikmS1BxaPlS4qJgkSc2h\nbUKFwx+SJJWr5UPFtGkwdao9FZIkla3lQwU4V4UkSc2gLUJFda4KSZJUnrYIFfZUSJJUvrYIFdtv\nD/ffX3YVkiSNb00XKiLi9Ijoj4izhvueuXPhnnvqWZUkSdqSpgoVEfFs4O3ADSN5XzVUuP6HJEnl\naZpQERFbA98ATgRWjuS98+bB2rVerClJUpmaJlQA5wEXp5R+OdI3zpuXH+++u+CKJEnSsDVFqIiI\n1wH7Ax8czfvnzs2PhgpJksozoewCImIucA5wZEpp/Wg+Y/vtYeJEL9aUJKlMpYcKoAvYDuiNiKjs\n2wo4LCLeDUxO6amXYC5evJjOzs6/vZ4wAS65pJuTT+5uRM2SJDW1np4eenp6NtrX19dX1++MIX5e\nN1RETAd2GbT7a8BS4IyU0tJB5y8ClixZsoRFixb9bf9hh+VrK775zToXLElSi+rt7aWrqwugK6XU\nW/Tnl95TkVJ6DLi5dl9EPAY8NDhQbM68eQ5/SJJUpqa4UHMII+4+mTvXCzUlSSpT6T0VQ0kpHTHS\n98ybB8uWQX8/dDRrVJIkqY21zY/fefNg3Tp48MGyK5EkaXxqm1DhXBWSJJWrbUJFdVZNL9aUJKkc\nbRMqttsOJk2yp0KSpLK0TaiI8A4QSZLK1DahApyrQpKkMrVdqLCnQpKkcrRVqJg7154KSZLK0lah\nonYCLEmS1FhtFSrmzoX16+H++8uuRJKk8aetQoVzVUiSVJ62DBVerClJUuO1VaiYNQumTDFUSJJU\nhrYKFdUJsBz+kCSp8doqVIBzVUiSVJa2CxVO1S1JUjnaLlQ4VbckSeVoy1CxbBls2FB2JZIkjS9t\nFyrmzs2BwgmwJElqrLYLFc5VIUlSOQwVkiSpEG0XKp72NJg61Ys1JUlqtLYLFRHOVSFJUhnaLlSA\nc1VIklSGtgwVzlUhSVLjtW2osKdCkqTGastQMXcu3HsvPPlk2ZVIkjR+tGWomDcP+vvhvvvKrkSS\npPGjbUMFOAQiSVIjtWWomDs3PxoqJElqnLYMFTNnwqxZ8Kc/lV2JJEnjR1uGighYuBBuvrnsSiRJ\nGj/aMlSAoUKSpEYbVaiIiA9HxLQh9k+NiA+PvayxW7AAbrklL4MuSZLqb7Q9FR8Bth5i/7TKsdIt\nXAhr18Idd5RdiSRJ48NoQ0UAaYj9+wEPj76c4ixcmB8dApEkqTFGFCoi4pGIeJgcKP4UEQ/XbH3A\nZcCF9Sh0pObMgRkzYOnSsiuRJGl8mDDC899L7qX4KnmYo6/m2DrgzpTSbwuqbUy8A0SSpMYaUahI\nKf03QETcAVyZUmrq1TUWLoQbbyy7CkmSxofRXlOxGlhQfRERL4+IH0bEJyJiUjGljd3ChXn4o7+/\n7EokSWp/ow0VXwL2BIiI+cAFwOPAq4Eziylt7BYuhMcec7puSZIaYbShYk/g+srzVwO/SikdD7wJ\nOG4kHxQRJ0XEDRHRV9muiogXj7KujXgHiCRJjTOWW0qr7z0S+Gnl+d3A7BF+1t3APwGLgC7gl8CP\nImLBZt81DPPmwfTphgpJkhphpHd/VF0LfCgifg4cDryzsv8ZwP0j+aCU0k8G7fpQRLwTeC4wphtC\nOzryzJqGCkmS6m+0PRXvJfcsfA7495TS7ZX9rwKuGm0xEdEREa8jz8xZyK2p3lYqSVJjjKqnIqV0\nI7DvEIc+AIx4tY2I2IccIqaQ7yx5RUrpltHUNtjChfDDH0JKee4KSZJUH6Md/gAgIroYuLX05pRS\n7yg/6hbyFN+d5N6Or0fEYUUEi4ULYdUquPdeePrTx/ppkiRpU0YVKiJie/JtpIcDKyu7Z0bE5cDr\nUkoPjuTzKpNo/aXy8rqIOAg4lYFrNZ5i8eLFdHZ2brSvu7ub7u7ujfbV3gFiqJAkjRc9PT309PRs\ntK+vr28TZxcjUhpqXbAtvCniAmA+8IaU0tLKvoXAfwO3p5S6N/f+YXz+L4C/ppTeMsSxRcCSJUuW\nsGjRoi1+1oYNsPXWcMYZcOqpY6lKkqTW1tvbS1dXF0DXGEYXNmm0wx8vBo6sBgqAlNLNEXEycOlI\nPigiPgH8DLgL2AZ4PbkH5KhR1raRrbaCvff2Yk1JkupttKGiA1g/xP71jPyOku3JPRw7kRcouxE4\nKqX0y1HW9hTeASJJUv2NNlT8Ejg3IrpTSvcCRMTTgbOBX4zkg1JKJ46yhmFbuBB+9jPvAJEkqZ5G\nO0/Fu4EZwJ0R8eeI+DNwR2XfKUUVV5SFC+GRR+CBB8quRJKk9jXaeSrurlwweSSwd2X30pTSzwur\nrEC1d4DssEO5tUiS1K5G1FMREUdExM0RMSNll6WUPptS+izw+4i4KSKOrlOto7bbbjBxotdVSJJU\nTyMd/ngv8OWU0qrBB1JKfeQl0Ztu+GPCBNhrL0OFJEn1NNJQsR/wP5s5finwrNGXUz/eASJJUn2N\nNFTswNC3klY9CWw3+nLqx1AhSVJ9jTRULAP22czxZwHLR19O/ey7b777Y9mysiuRJKk9jTRU/BT4\neERMGXwgIqYCHwV+XERhRTv44Pz4m9+UW4ckSe1qpKHi34BtgT9FxGkR8fLK9k/ArZVj/150kUXY\ncUfYfXdDhSRJ9TKieSpSSvdHxMHAF4BPAtX5KRNwCXBySun+YkssziGHGCokSaqXEU9+lVL6K3BM\nRDwN2J0cLG5LKT1SdHFFO+QQ+PrXoa8PBq2aLkmSxmi003STUnokpfT7lNI1rRAoAA49FPr74eqr\ny65EkqT2M+pQ0Yr22AO2284hEEmS6mFchYoIr6uQJKlexlWogBwqfvc7WLeu7EokSWov4zJUrFkD\n111XdiWSJLWXcRcqDjgApk51CESSpKKNu1AxcSI897mGCkmSijbuQgUMXKyZUtmVSJLUPsZtqFix\nAm69texKJElqH+MyVDz3udDR4RCIJElFGpehYsYM2G8/Q4UkSUUal6ECnARLkqSijetQ8ec/w/Ll\nZVciSVJ7GNehAuDKK8utQ5KkdjFuQ8WcOTB/Pvz612VXIklSexi3oQLghS+En/zE+SokSSrCuA4V\nr3xlvq7ixhvLrkSSpNY3rkPFEUfAzJnwve+VXYkkSa1vXIeKSZPg2GPhu98tuxJJklrfuA4VAMcd\nB0uX5k2SJI3euA8VRx0FW2/tEIgkSWM17kPFlCnw0pcaKiRJGqtxHyogD4Fcf32+E0SSJI2OoQL4\n+7+HqVPtrZAkaSwMFcD06TlYGCokSRo9Q0XFccfBNdfAXXeVXYkkSa3JUFHx0pfmeSu+//2yK5Ek\nqTUZKipmzMi3lzoEIknS6Bgqahx3XF4KffnysiuRJKn1GCpqHHtsHgI5//yyK5EkqfWUHioi4oMR\ncU1ErIqI+yPiBxGxZxm1bLstdHfD5z4HTz5ZRgWSJLWu0kMFcCjwWeA5wJHARODSiJhaRjGnngp3\n3w0//GEZ3y5JUusqPVSklI5JKZ2fUlqaUvoD8CZgZ6CrjHr23x8OPxzOOaeMb5ckqXWVHiqGMBNI\nwMNlFXDqqfmCzWuvLasCSZJaT1OFiogI4BzgNymlm8uq49hjYddd4dxzy6pAkqTWM6HsAgb5PLAQ\neP6WTly8eDGdnZ0b7evu7qa7u3vMRWy1FZxyCpx+Opx5Juy005g/UpKkhurp6aGnp2ejfX19fXX9\nzkgp1fULhisiPge8DDg0pbTJybIjYhGwZMmSJSxatKhu9axcCXPnwvveBx/9aN2+RpKkhunt7aWr\nqwugK6XUW/TnN8XwRyVQvBx4weYCRSPNnAlvehN84QvwxBNlVyNJUvMrPVRExOeB1wPHA49FxA6V\nbUrJpXHKKfDgg/Dtb5ddiSRJza/0UAGcBMwA/h9wb832mhJrAmCvveCYY+Dss6G/v+xqJElqbqWH\nipRSR0ppqyG2r5ddG8Bpp8GNN8IFF5RdiSRJza30UNHsDj8cXv7yfCfImjVlVyNJUvMyVAzDmWfC\nvfc6b4UkSZtjqBiGPfeEd70LPvEJeOCBsquRJKk5GSqG6cMfzpNifeQjZVciSVJzMlQM06xZOVj8\n53/CTTeVXY0kSc3HUDECJ58M8+fDBz5QdiWSJDUfQ8UITJoEn/oU/OxncMklZVcjSVJzMVSM0Cte\nkW8zfec7YdWqsquRJKl5GCpGKAK++tU8ffepp5ZdjSRJzcNQMQrz58NnPwtf+xp873tlVyNJUnMw\nVIzSG98Ixx0Hb397nhhLkqTxzlAxShHwpS/B5Ml5iXQXHJMkjXeGijGYNSsPgVx2GXzuc2VXI0lS\nuQwVY3TUUfCe9+TVTK+7ruxqJEkqj6GiAGecAfvsAy97GSxbVnY1kiSVw1BRgKlT4aKL8nUWL3sZ\nPPpo2RVJktR4hoqCzJkDP/4x3HYbHH88bNhQdkWSJDWWoaJA++0HF1wAP/kJvP/9ZVcjSVJjGSoK\ndswxcO65cM45cN55ZVcjSVLjTCi7gHb07nfD7bfDKafAtGnw5jeXXZEkSfVnqKiTs86CJ56At7wF\nnnwS3va2siuSJKm+DBV10tEBX/gCTJiQp/J+8sm8sqkkSe3KUFFHEXnhsQkT4F3vysHilFPKrkqS\npPowVNRZBJx9NkycmGfefPRROP30vF+SpHZiqGiACDjzzHzR5j//M/zpT3kxskmTyq5MkqTieEtp\ng0TARz8K558P3/oWvOhFsGJF2VVJklQcQ0WDnXACXH45LF0Kz3lOfpQkqR0YKkpw8MFwzTV5zZDn\nPQ9+8IOyK5IkaewMFSXZdVe46ip44Qvhla+Ek0/O81pIktSqDBUlmjEDvvvdPJ/FV77icIgkqbUZ\nKkoWASedBL//PaxfDwceCF/+MqRUdmWSJI2MoaJJ7LtvDhbHH59n4DzqKPjLX8quSpKk4TNUNJHp\n03Mvxc9+luey2HffPHHWhg1lVyZJ0pYZKprQi18Mf/wjvPWt8L735btFrr++7KokSdo8Q0WT2mYb\n+Mxn4Mor89TeixbBO94BDzxQdmWSJA3NUNHknve83Etx9tlw4YWwxx55WfV168quTJKkjRkqWsDE\niXDqqXDbbXlGzg98APbZJ4eM/v6yq5MkKTNUtJDZs+G883LPxW67wWtfm4dFLr7YW1AlSeUzVLSg\nfffNd4j8+tcwcyYce2weJrn0UsOFJKk8hooWdsgheXGyyy7LYeLoo+HZz86zdHobqiSp0ZoiVETE\noRFxUUQsi4j+iDi27JpaRQQceSRcfXXuqejshFe/GhYsyHNeuJ6IJKlRmiJUANOB64F3AXbgj0IE\nvOhF8ItfwO9+l4dI3vEO2Hln+NCHYNmysiuUJLW7pggVKaX/SSl9OKX0IyDKrqfVHXQQfO97cMst\n8LrXwbnn5lVRX/ta+M1vvO5CklQfTREqVB977pkn0Fq2LM9tcd11cOihuRfjnHNgxYqyK5QktRND\nxTgwYwacckruubj0UnjmM+G00+DpT889GZdd5oWdkqSxM1SMIx0d+bqLCy7IvRef/CTccENeEXXe\nPHj/+/NrSZJGI1KTDbBHRD/wv1JKF23i+CJgyWGHHUZnZ+dGx7q7u+nu7m5Ale0jpbzk+je+AT09\neUhk331zD8arX52nBZcktZ6enh56eno22tfX18cVV1wB0JVS6i36O1s2VCxZsoRFixY1trg2t349\nXHJJDhgXXwyPPw777w+veU0OGLvvXnaFkqSx6O3tpaurC+oUKppi+CMipkfEfhGxf2XX/MrreaUW\nNs5MnAgvfSl8+9vw4IPwne/kiz3/7d9yj8W+++bbU6+91jtIJElP1RShAjgQuA5YQp6n4j+AXuCj\nZRY1nk2bBq96Vb7+4oEH8iydBxwAn/98nrVz3jx45zvhxz+Gxx4ru1pJUjOYUHYBACmlX9E8AUeD\nTJ8Oxx2Xt/Xr85ojP/pRHiL54hdh8mT4u7+DY46BF78492qEs41I0rjjD3KNyMSJcMQReUKtP/85\n36b6yU/mW1Lf/37Ya6880daJJ+al2R96qOyKJUmN0hQ9FWpNETlE7LUXLF4Mjz4Kv/pVnvfi0kvh\nK1/J5zzrWfCCF+QwcthheX0SSVL7MVSoMFtvDS95Sd4A7rknr0Vy+eXw/e/nWTw7OvIdJYcemgPG\nIYfA9tuXW7ckqRiGCtXN3LnwxjfmLSW4444cMK64Ai66KA+hQO7peP7z4XnPg4MPhr33zuFDktRa\nDBVqiAiYPz9vb31r3nfPPfmiz1//Gn77W/ja16C/H2bOhOc8J28HHZS37bYrtXxJ0jAYKlSauXOh\nuztvAKtX59k9r7oqh4zPfx4+9rF87BnPyLeydnXBgQfCokU5fEiSmoehQk1jm23yxZxHHJFfpwR3\n3gnXXAO/+12edOvjH88XhALstlsOF/vvn+fQOOAA2HHH0sqXpHHPUKGmFZF7KJ7xDHjta/O+DRvg\nT3+CJUtyyLjuOvjUp2DVqnx8hx1gv/3yHSfVbcECmDSpvD+HJI0Xhgq1lK22yiFhwQI44YS8r3oR\n6HXXwfXXwx/+kGcA/fSn8/EJE/J04898JuyzT94WLsw9HRMnlvdnkaR2Y6hQy6u9CPS44wb29/Xl\ngHHTTfDHP+btM58ZmJBr4sQcNhYuzCFl773ztueeeRZRSdLIGCrUtjo78zwYhxwysC+lvJbJ0qVw\n880D25e+BPffP3DevHn5Vtc998zbXnvl6cd32SX3fEiSnsp/HjWuROTrLnbYIa9XUmvlSrj11jz1\n+C235Gs3rrgizwy6dm0+Z8KEfI3HHnvkpeB33z0Po+y2W56efPLkRv+JJKl5GCqkitr5MWpt2JDn\n1Lj11rzeyW23we235+nIv/hFWLcunxeRb5OtDsVULzKdPz8Hjh13dFIvSe3NUCFtwVZb5WGPXXZ5\n6rH+fli2LIeN6nbHHXlI5cc/hgcfHDh30qSBz9l1V9h554HXu+wCT3+6F45Kam2GCmkMOjry9Rfz\n5j11OAXynBp33rnxdscd+S6VH/1o49ARATvtlMNG9TPnzcu9H9Vtp51yyJGkZmSokOpo660HbmMd\nyuOPw113wV//Cnffnbe77sqP11+fh13WrBk4v6MjD6PMnZt7NqrbnDkDj3PmwIwZOaRIUiMZKqQS\nTZs2cCvrUFKCRx4ZCBzLlg1s99yTF2i79958Tq2pU3O42Gmnjbcdd8xb9fns2fZ8SCqOoUJqYhGw\n7bZ522+/TZ+3Zk0OF9Vt+fKNH2+6Ce67Dx5+eOP3dXTkxdp23HHgrpjttx94Xn29/fb5PGcmlbQ5\nhgqpDUydOnBr6+asXZvn41i+PD/ed9/A43335es9rr4676tOfV6rs3MgYGy33cDz2bMH9lWfz56d\ne2IkjR+GCmkcmTw5Xwi6885bPnfNmnwh6QMPDGz335/3Vbfe3vy4YkW+PmSwqVNzuJg9G2bNylvt\n8+q27bYDz2fM8NZbqVUZKiQNaerU4QcQyKGiGjYeeigHjepW3VedzXTFivy6OqlYrY4OeNrTBsLG\nttvm14Mfq1v19cyZuWZJ5TFUSCrEtGmbns9jKCnlIPLwwzlgPPRQfl7dqvuqF6recEN+/vDDG98R\nU2vy5IGwMXPmprfOzqc+7+yEKVO8a0YaC0OFpFJE5IXbpk/P83GMxBNP5IAxeFu5cuPnK1fm60eW\nLs37+vryltLQnztpUh5+6ezceKvuqz02Y8bQ2zbbOImZxi9DhaSWM2XKwG2yI9XfnyclW7kyB4zB\nj4O3VavyTKnV59XHTQWTan3VgFEbNra0bb31Ux+nT/caE7UOQ4WkcaWjY+AH/WilBI89lsNFNWis\nXj3wetWqgde1+5cvzwvVrV49sD366Ja/b/r0gZAxeKsNH7WP1ee1+2u3qVMd6lHxDBWSNEIRAz+4\n58wZ22f19+eA8uijAyGj9nH16ny8uq+6vxpq7r134HX1+FB34gz1Z5g27alho7pVjw3ncVObE6uN\nP4YKSSpRR8fA8MdohnOG0t+fg0U1aDz22FOfV19Xz6vdqnfy3HnnwPHHHx94vmHD8OqYNGkgYEyd\nuunn1dfV50O93tI2aZI9L83AUCFJbaajY6AnZYcdiv3slGDdunwHTjVoDA4etfvWrNn43Nrnq1fn\nSdeq59Seu2YNrF8//LoicriYMmXLj5vaN/jY4G3y5KH3G2gGGCokScMWkX+4Tp6cb8Wtpw0bNg4Z\ng7cnntj0vtpjtfseeuip56xdO/D6iSc2fxHuplQDR23wGLyv9nFzz8e6lXlhr6FCktSUttpqoMel\nUao9MWvXDoSM2vBR3T/4dXUb/Lq6r7o9+ujAxG+Dj9W+Xrdu9H+GrbYaCBiTJsEnPwlvfnNxbbQ5\nhgpJkipqe2LGcofQWPX3D4SbzW2bOqd2/z77NK5uQ4UkSU2mo2NgGKWVOKWKJEkqhKFCkiQVwlAh\nSZIKYaiQJEmFMFRIkqRCGCokSVIhDBWSJKkQhgpJklQIQ4UkSSpE04SKiDg5Iu6IiDURcXVEPLvs\nmjSgp6en7BLGHdu88WzzxrPN20tThIqIeC3wH8BHgAOAG4BLImJ2qYXpb/wfv/Fs88azzRvPNm8v\nTREqgMXAl1JKX08p3QKcBDwOvKXcsiRJ0nCVHioiYiLQBfyiui+llICfA88rqy5JkjQypYcKYDaw\nFXD/oP33Azs2vhxJkjQarbj0+RSApUuXll3HuNLX10dvb2/ZZYwrtnnj2eaNZ5s3Vs3Pzrosqh55\npKE8leGPx4HjUkoX1ez/GtCZUnrFoPOPB77Z0CIlSWovr08pfavoDy29pyKltD4ilgAvBC4CiIio\nvP7MEG+5BHg9cCfwRIPKlCSpHUwBdiX/LC1c6T0VABHxGuBr5Ls+riHfDfIqYO+U0oMlliZJkoap\n9J4KgJRjR2bGAAAIiUlEQVTShZU5KT4G7ABcDxxtoJAkqXU0RU+FJElqfc1wS6kkSWoDhgpJklSI\nlgsVLjxWHxHxwYi4JiJWRcT9EfGDiNhziPM+FhH3RsTjEXFZROxeRr3tKCJOj4j+iDhr0H7bvEAR\nMScizo+IFZU2vSEiFg06xzYvUER0RMTHI+IvlTa9PSI+NMR5tvsoRcShEXFRRCyr/Dty7BDnbLZ9\nI2JyRJxX+X9jdUR8NyK2H0kdLRUqXHisrg4FPgs8BzgSmAhcGhFTqydExD8B7wbeDhwEPEZu/0mN\nL7e9VMLx28l/p2v32+YFioiZwJXAWuBoYAHwPuCRmnNs8+KdDrwDeBewN3AacFpEvLt6gu0+ZtPJ\nNzm8C3jKxZLDbN9zgJcAxwGHAXOA742oipRSy2zA1cC5Na8DuAc4reza2m0jT5/eDxxSs+9eYHHN\n6xnAGuA1ZdfbyhuwNXArcARwOXCWbV63tj4D+NUWzrHNi2/3i4EvD9r3XeDrtntd2rsfOHbQvs22\nb+X1WuAVNefsVfmsg4b73S3TU+HCYw03k5x2HwaIiGeQ12Kpbf9VwO+w/cfqPODilNIva3fa5nXx\nMuDaiLiwMszXGxEnVg/a5nVzFfDCiNgDICL2A54P/LTy2navo2G274HkaSZqz7kVuIsR/Ddoinkq\nhmlzC4/t1fhy2ldlRtNzgN+klG6u7N6RHDJc+K1AEfE6YH/y/9CD2ebFmw+8kzyM+u/kbuDPRMTa\nlNL52Ob1cgb5N+FbImIDeej9X1JK364ct93razjtuwOwrhI2NnXOFrVSqFDjfB5YSP5NQnUSEXPJ\n4e3IlNL6susZJzqAa1JK/1p5fUNE7EOezff88spqe68FjgdeB9xMDtLnRsS9lTCnNtEywx/ACmAD\nOU3V2gG4r/HltKeI+BxwDPB3KaXlNYfuI1/DYvsXpwvYDuiNiPURsR44HDg1ItaRf0OwzYu1HBi8\nxPFSYOfKc/+e18eZwBkppe+klG5KKX0TOBv4YOW47V5fw2nf+4BJETFjM+dsUcuEispvctWFx4CN\nFh67qqy62kklULwceEFK6a7aYymlO8h/sWrbfwb5bhHbf3R+DuxL/q1tv8p2LfANYL+U0l+wzYt2\nJU8dLt0L+Cv497yOppF/KazVT+VnkO1eX8Ns3yXAk4PO2YscuH873O9qteGPs4CvVVY1rS48No28\nGJnGICI+D3QDxwKPRUQ10fallKqrwZ4DfCgibievEvtx8t03P2pwuW0hpfQYuSv4byLiMeChlFL1\nt2nbvFhnA1dGxAeBC8n/qJ4IvK3mHNu8eBeT2/Qe4CZgEfnf7/9bc47tPgYRMR3YndwjATC/ckHs\nwymlu9lC+6aUVkXEV4CzIuIRYDV5pfArU0rXDLuQsm99GcWtMu+qNMgacno6sOya2mEj/9awYYjt\nDYPO+9/kW5MeJy+du3vZtbfTBvySmltKbfO6tPExwI2V9rwJeMsQ59jmxbb5dPIvhXeQ50e4Dfgo\nMMF2L6yND9/Ev+NfHW77ApPJ8xWtqISK7wDbj6QOFxSTJEmFaJlrKiRJUnMzVEiSpEIYKiRJUiEM\nFZIkqRCGCkmSVAhDhSRJKoShQpIkFcJQIUmSCmGokNQQEXFHRLyn7Dok1Y+hQmpDEfFfEfH9yvPL\nI+KsBn73GytrBwx2IPCfjapDUuO12oJikkoSERNTXi14i6cCT5n/P6X0UPFVSWom9lRIbSwi/ou8\n0NCpEdEfERsiYufKsX0i4qcRsToi7ouIr0fErJr3Xh4Rn42IsyPiQeB/KvsXR8SNEfFoRNwVEedF\nxLTKscOBrwKdNd/34cqxjYY/ImJeRPyo8v19EXFBRGxfc/wjEXFdRJxQee/KiOiprMZYPedVlVoe\nj4gVEXFpREyta6NK2iRDhdTe3kNezffLwA7ATsDdEdEJ/AJYQl6G+mhge/Jy4LXeAKwFDgZOquzb\nAJwCLKwcfwFwZuXYVcB7gVU13/fpwUVFRAAXATOBQ4EjgfnAtweduhvwcvLKoi8hB6TTK5+xI/At\n8vLZe1eOfZ+BpZ8lNZjDH1IbSymtjoh1wOMppQer+yPi3UBvSulfa/adCNwVEbunlG6v7L4tpXT6\noM/8TM3LuyLiX4EvAO9OKa2PiL582sD3DeFI4JnArimleyvf/wbgpojoSiktqZYFvDGl9HjlnPOB\nFwL/Sg4sWwE/SCndXTn/puG2jaTi2VMhjU/7AUdUhh5WR8RqYCn5Wojdas5bMviNEXFkRPw8Iu6J\niFXA+cCsiJgygu/fG7i7GigAUkpLgZXAgprz7qwGiorl5B4VgBvIvS1/jIgLI+LEiJg5ghokFcxQ\nIY1PW5OHH55FDhjVbQ/giprzHqt9U0TsAlwMXA+8kjx0cnLl8KQ61Dn4wtBE5d+tlFJ/Suko4MXk\nHopTgFsqNUoqgaFCan/ryMMEtXrJww9/TSn9ZdC2ZjOf1QVESun9KaVrKsMkTx/G9w22FJgXEX97\nb0QsJF9jMaIhjJTSb1NKHwUOIIeQV4zk/ZKKY6iQ2t+dwHMiYpeauzvOA7YFvh0RB0bE/Ig4OiK+\nWrmIclNuByZGxHsi4hkR8Q/AO4b4vq0j4oiImDXU3RgppZ8DfwS+GREHRMRBwH8Dl6eUrhvOHyoi\nDoqID0ZEV0TMA44DZgM3D+f9kopnqJDa36fJd2zcDDwQETunlJYDzyf/G3AJcCNwFvBISqk6x8RQ\nc03cCPwjcBrwB6Cbyt0YNef8FvgicAHwAPCBTXzescAjwK+AS8mB5XUj+HOtAg4DfgLcCnwM+MeU\n0qUj+AxJBYqBfz8kSZJGz54KSZJUCEOFJEkqhKFCkiQVwlAhSZIKYaiQJEmFMFRIkqRCGCokSVIh\nDBWSJKkQhgpJklQIQ4UkSSqEoUKSJBXCUCFJkgrx/wESPy79lGpA5AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x104749470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "from mlxtend.classifier import LogisticRegression\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "X = X[0:100] # class 0 and class 1\n",
    "y = y[0:100] # class 0 and class 1\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "lr = LogisticRegression(eta=0.1, \n",
    "                        l2_lambda=0.0, \n",
    "                        epochs=100,\n",
    "                        minibatches=1, # for Gradient Descent\n",
    "                        random_seed=1,\n",
    "                        print_progress=3)\n",
    "lr.fit(X, y)\n",
    "\n",
    "plot_decision_regions(X, y, clf=lr)\n",
    "plt.title('Logistic Regression - Gradient Descent')\n",
    "plt.show()\n",
    "\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### Predicting Class Labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Last 3 Class Labels: [1 1 1]\n"
     ]
    }
   ],
   "source": [
    "y_pred = lr.predict(X)\n",
    "print('Last 3 Class Labels: %s' % y_pred[-3:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Predicting Class Probabilities"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Last 3 Class Labels: [ 0.99997968  0.99339873  0.99992707]\n"
     ]
    }
   ],
   "source": [
    "y_pred = lr.predict_proba(X)\n",
    "print('Last 3 Class Labels: %s' % y_pred[-3:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Stochastic Gradient Descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 30/30 | Cost 0.27 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\nPdAfP/ooHyxb1mH6TgMGcMWpp25WLFFHCqLGHmX+SRq10CiBSHJESv5mdgNweYkmDtjbOTdrs6KS\nsnh8+nTOuOEGmoq81gJw5ZXdPgGIOu8olfKizjtqpbkfP/ooP/zVr+hXZP5rg39zJwBxrmd3Yo8y\n/yRVJ1Q1QJFkidrz/xkwuos273UzFgDGTJ3KmGnTOkwfNWIEo5qbN2fWqbNo5UqagNuAPfKmv4P/\nk7DFerNxzTtKpbyo845aae6DZcvoV2L++SMCca5nd2KPMv8kVSdUNUCRZImU/J1zS4GlMcUCwKjm\nZiX5MtsDONDy7gEp402eUecdpVJe1HlHrTS3B3BgyTl2P5aoFQGjxh5l/kmqTqhqgCLJEOdz/jsD\nA4DBQKOZ7R+89K5zbm3n7xQREZE4xXnD3/XA6Xm//zX490jguRiXKyIiIiXElvydc2cCZ8Y1fwnv\nHWg3TP1OFecdpVJe1HlHrTRXOL9S849zPSF67FHmn6TqhKoGKJIMetSvjm2/1Va04G9MK9QSvF6p\neUeplBd13lErze00YABrO5n/2uD1Sqxnd2KPMv8kVSdUNUCRZIm9wl9kqvBXVnrOX8/56zl/kRQJ\nWeFPyV9ERKReqLxvfUpL7ynqesY5whFVWvaRiNQuJf8akpYqaVHXM85KhlGlZR+JSG1T8q8haamS\nFnU946xkGFVa9pGI1DYl/xqUlipp3arYF1Mlw6jSso9EpDY1dN1ERERE6omSv4iISMpo2L8GpaVK\nWrcq9sVUyTCqtOwjEalNSv41JC1V0qKuZ5yVDKNKyz4SkdqmIj81Ji3PkOs5fxGRblCFPxERkZQJ\nmfx1w5+IiEjKKPmLiIikjJK/iIhIyij5i4iIpIySv4iISMoo+YuIiKSMkr+IiEjKKPmLiIikjJK/\niIhIyij5i4iIpIySv4iISMoo+YuIiKSMkr+IiEjKKPmLiIikjJK/iIhIyij5i4iIpIySv4iISMoo\n+YuIiKSMkr+IiEjKKPmLiIikjJK/iIhIyij5i4iIpIySv4iISMoo+YuIiKSMkr+IiEjKKPmLiIik\njJK/iIhIyij5i4iIpIySv4iISMoo+YuIiKSMkr+IiEjKKPmLiIikjJK/iIhIysSS/M1ssJndb2bv\nmVmLmb1jZteaWc84liciIiLh9YhpvsMAA74FzAY+CdwPNAHfi2mZIiIiEkIsyd859wzwTN6kuWb2\nM+BclPxFRESqqpLX/LcGllVweSIiIlJERZK/me0OXADcU4nliYiISOciDfub2Q3A5SWaOGBv59ys\nvPd8HHgK+J1z7sGuljFm6lTGTJvWYfqoESMY1dwcJVwREREpwpxz4RubbQts20Wz95xzmaD9jsBk\n4AXn3JmhFjJhQviAREREZJORIy1Ms0g9f+fcUmBpmLZBj38S8ApwVpTliIiISHxiuds/6PFPAebg\n7+7f3syfjDjnFsaxTBEREQknruf8jwZ2C37mBdMMf09AY0zLFBERkRBiudvfOfewc66x4KfBOafE\nLyIiUmWq7S8iIpIySv4iIiIpo+QvIiKSMkr+IiIiKaPkLyIikjJK/iIiIimj5C8iIpIykWr7V0ji\nAhIREakRoWr7q+cvIiKSMkr+IiIiKaPkLyIikjJK/iIiIimj5C8iIpIySv4iIiIpo+SfEGPGjKl2\nCDVD2yo8bavwtK3C0XYKL8nbSsk/IZL8IUkabavwtK3C07YKR9spvCRvKyV/ERGRlFHyFxERSRkl\nfxERkZRR8hcREUmZJP5hn1Qys1HOueTeHZIg2lbhaVuFp20VjrZTeEneVkr+IiIiKaNhfxERkZRR\n8hcREUkZJX8REZGUUfIXERFJGSV/ERGRlFHyFxERSRkl/4Qxs8Fmdr+ZvWdmLWb2jplda2Y9qx1b\n0pjZ983sf81srZktq3Y8SWJm55vZHDP7yMxeNLPPVDumJDKzEWY23szmm1nWzI6vdkxJZGZXmtnL\nZrbKzBaa2eNmtme140oiMzvXzF4zs5XBzwtm9sVqx1VIyT95hgEGfAvYB7gEOBf4YTWDSqiewCPA\n3dUOJEnM7KvATcA1wIHAa8AzZjawqoElUz9gBvAdQEVPOjcCuB04BPg8/rs30cz6VjWqZJoHXA58\nCvg0MAkYZ2Z7VzWqAiryUwPM7DLgXOfc7tWOJYnM7AzgFufcgGrHkgRm9iLwknPu4uB3wx+QbnPO\n/bSqwSWYmWWBE5xz46sdS9IFJ5KLgMOdc89XO56kM7OlwGXOudHVjiVHPf/asDWgYW3pUnB56NPA\ns7lpzp/h/xkYXq24pO5sjR8p0XGpBDNrMLOvAU3A9GrHk69HtQOQ0sxsd+AC4NJqxyI1YSDQCCws\nmL4Q2Kvy4Ui9CUaSfg4875z7e7XjSSIz+yQ+2fcBVgMnOudmVjeq9tTzrxAzuyG4oaizn7bCG2jM\n7OPAU8DvnHMPVifyyurOdhKRiroLfz/S16odSILNBPYHDsbfk/RLMxtW3ZDaU8+/cn4GdHW9573c\nf8xsR/yNIs87574dZ2AJE2k7SQdLgDZgUMH0QcCCyocj9cTM7gCOA0Y45z6sdjxJ5ZzLsOk49Tcz\nOxi4GDivelG1p+RfIc65pcDSMG2DHv8k4BXgrDjjSpoo20k6cs61mtmrwFHAeNg4THsUcFs1Y5Pa\nFiT+rwDNzrn3qx1PjWkAelc7iHxK/gkT9PinAHOA7wHb+2M3OOcKr+OmmpntDAwABgONZrZ/8NK7\nzrm11Yus6m4GHgpOAl7GPy7aBDxUzaCSyMz6AbvjH68F2C34HC1zzs2rXmTJYmZ3AaOA44G1ZpYb\nWVrpnFtXvciSx8x+hL9c+z6wBXAa0AwcU824CulRv4QJHlsrvL5v+Ju2G6sQUmKZ2Wjg9CIvHemc\ne67S8SSJmX0Hf/I4CP8c+4XOub9UN6rkMbNmYDIdn/F/2DmXqlG3UoLHIIslizOdc7+sdDxJZmb3\nA58DPgasBF4Hfuycm1TVwAoo+YuIiKSM7vYXERFJGSV/ERGRlFHyFxERSRklfxERkZRR8hcREUkZ\nJX8REZGUUfIXERFJGSV/ERGRlFHyFxERSRklfxERkZRR8hcREUmZ/w+IBPI/rNoReAAAAABJRU5E\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10e860f28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10a90a978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "from mlxtend.classifier import LogisticRegression\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "X = X[0:100] # class 0 and class 1\n",
    "y = y[0:100] # class 0 and class 1\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "lr = LogisticRegression(eta=0.5, \n",
    "                        epochs=30, \n",
    "                        l2_lambda=0.0, \n",
    "                        minibatches=len(y), # for SGD learning \n",
    "                        random_seed=1,\n",
    "                        print_progress=3)\n",
    "lr.fit(X, y)\n",
    "\n",
    "plot_decision_regions(X, y, clf=lr)\n",
    "plt.title('Logistic Regression - Stochastic Gradient Descent')\n",
    "plt.show()\n",
    "\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 3 - Stochastic Gradient Descent w. Minibatches"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here, we set `minibatches` to 5, which will result in Minibatch Learning with a batch size of 20 samples (since 100 Iris samples divided by 5 minibatches equals 20)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 30/30 | Cost 0.25 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\n6Dl/PecflZ7zF0kYFfmRqKIerOM8uMedOKLMP+0JvhQleJHapORf5+KsAx913lF60FHnHbUH+uPH\nHuODZcs6TN9xwACuPO20zYol6khB1NijzD9JoxYaJRBJjkjJ38xuBK4o0cQB+zjnZm1WVFIWT0yb\nxpk33khTkddaAK66qtsnAFHnHaVSXtR5R6009+PHHuOHv/oV/YrMf23wb+4EIM717E7sUeafpOqE\nqgYokixRe/4/A0Z10ea9bsYCwOgpUxg9dWqH6SOHD2dkc/PmzDp1Fq1cSRNwO7Bn3vR38H8Stlhv\nNq55R6mUF3XeUSvNfbBsGf1KzD9/RCDO9exO7FHmn6TqhKoGKJIskZK/c24psDSmWAAY2dysJF9m\newIHWd49IGW8yTPqvKNUyos676iV5vYEDio5x+7HErUiYNTYo8w/SdUJVQ1QJBnifM5/J2AAsAvQ\naGYHBC+965xb2/k7RUREJE5x3vB3A3BG3u9/Df49Cng+xuWKiIhICbElf+fcWcBZcc1fwnsH2g1T\nv1PFeUeplBd13lErzRXOr9T841xPiB57lPknqTqhqgGKJIMe9atj22+1FS34G9MKtQSvV2reUSrl\nRZ131EpzOw4YwNpO5r82eL0S69md2KPMP0nVCVUNUCRZYq/wF5kq/JWVnvPXc/56zl8kRUJW+FPy\nFxERqRcq71uf0tJ7irqecY5wRJWWfSQitUvJv4akpUpa1PWMs5JhVGnZRyJS25T8a0haqqRFXc84\nKxlGlZZ9JCK1Tcm/BqWlSlq3KvbFVMkwqrTsIxGpTQ1dNxEREZF6ouQvIiKSMhr2r0FpqZLWrYp9\nMVUyjCot+0hEapOSfw1JS5W0qOsZZyXDqNKyj0SktqnIT41JyzPkes5fRKQbVOFPREQkZUImf93w\nJyIikjJK/iIiIimj5C8iIpIySv4iIiIpo+QvIiKSMkr+IiIiKaPkLyIikjJK/iIiIimj5C8iIpIy\nSv4iIiIpo+QvIiKSMkr+IiIiKaPkLyIikjJK/iIiIimj5C8iIpIySv4iIiIpo+QvIiKSMkr+IiIi\nKaPkLyIikjJK/iIiIimj5C8iIpIySv4iIiIpo+QvIiKSMkr+IiIiKaPkLyIikjJK/iIiIimj5C8i\nIpIySv4iIiIpo+QvIiKSMkr+IiIiKaPkLyIikjJK/iIiIimj5C8iIpIysSR/M9vFzB4ws/fMrMXM\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10a917f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10a8ff7b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "from mlxtend.classifier import LogisticRegression\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "X = X[0:100] # class 0 and class 1\n",
    "y = y[0:100] # class 0 and class 1\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "lr = LogisticRegression(eta=0.5, \n",
    "                        epochs=30, \n",
    "                        l2_lambda=0.0, \n",
    "                        minibatches=5, # 100/5 = 20 -> minibatch-s \n",
    "                        random_seed=1,\n",
    "                        print_progress=3)\n",
    "lr.fit(X, y)\n",
    "\n",
    "plot_decision_regions(X, y, clf=lr)\n",
    "plt.title('Logistic Regression - Stochastic Gradient Descent')\n",
    "plt.show()\n",
    "\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## LogisticRegression\n",
      "\n",
      "*LogisticRegression(eta=0.01, epochs=50, l2_lambda=0.0, minibatches=1, random_seed=None, print_progress=0)*\n",
      "\n",
      "Logistic regression classifier.\n",
      "\n",
      "Note that this implementation of Logistic Regression\n",
      "expects binary class labels in {0, 1}.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `eta` : float (default: 0.01)\n",
      "\n",
      "    Learning rate (between 0.0 and 1.0)\n",
      "\n",
      "- `epochs` : int (default: 50)\n",
      "\n",
      "    Passes over the training dataset.\n",
      "    Prior to each epoch, the dataset is shuffled\n",
      "    if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n",
      "\n",
      "- `l2_lambda` : float\n",
      "\n",
      "    Regularization parameter for L2 regularization.\n",
      "    No regularization if l2_lambda=0.0.\n",
      "\n",
      "- `minibatches` : int (default: 1)\n",
      "\n",
      "    The number of minibatches for gradient-based optimization.\n",
      "    If 1: Gradient Descent learning\n",
      "    If len(y): Stochastic Gradient Descent (SGD) online learning\n",
      "    If 1 < minibatches < len(y): SGD Minibatch learning\n",
      "\n",
      "- `random_seed` : int (default: None)\n",
      "\n",
      "    Set random state for shuffling and initializing the weights.\n",
      "\n",
      "- `print_progress` : int (default: 0)\n",
      "\n",
      "    Prints progress in fitting to stderr.\n",
      "    0: No output\n",
      "    1: Epochs elapsed and cost\n",
      "    2: 1 plus time elapsed\n",
      "    3: 2 plus estimated time until completion\n",
      "\n",
      "**Attributes**\n",
      "\n",
      "- `w_` : 2d-array, shape={n_features, 1}\n",
      "\n",
      "    Model weights after fitting.\n",
      "\n",
      "- `b_` : 1d-array, shape={1,}\n",
      "\n",
      "    Bias unit after fitting.\n",
      "\n",
      "- `cost_` : list\n",
      "\n",
      "    List of floats with cross_entropy cost (sgd or gd) for every\n",
      "    epoch.\n",
      "\n",
      "**Examples**\n",
      "\n",
      "For usage examples, please see\n",
      "    [http://rasbt.github.io/mlxtend/user_guide/classifier/LogisticRegression/](http://rasbt.github.io/mlxtend/user_guide/classifier/LogisticRegression/)\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X, y, init_params=True)*\n",
      "\n",
      "Learn model from training data.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "- `init_params` : bool (default: True)\n",
      "\n",
      "    Re-initializes model parameters prior to fitting.\n",
      "    Set False to continue training with weights from\n",
      "    a previous model fitting.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict(X)*\n",
      "\n",
      "Predict targets from X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `target_values` : array-like, shape = [n_samples]\n",
      "\n",
      "    Predicted target values.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict_proba(X)*\n",
      "\n",
      "Predict class probabilities of X from the net input.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `Class 1 probability` : float\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*score(X, y)*\n",
      "\n",
      "Compute the prediction accuracy\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values (true class labels).\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `acc` : float\n",
      "\n",
      "    The prediction accuracy as a float\n",
      "    between 0.0 and 1.0 (perfect score).\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.classifier/LogisticRegression.md', 'r') as f:\n",
    "    print(f.read())"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
